/**
 * Created by Administrator on 2015/6/5.
 */
var fs=require('fs');
var out=fs.createWriteStream('./test.txt');
for(var i=0; i<10000;i++){
    var flag=out.write(i+"");//write的时候必须是buffer对象或字符串对象，不能是数字
    console.log(flag);
}
out.on('drain',function(){
    console.log('小桶已干！');
});

/*
从操作系统缓冲区写入到真正的目标文件中，分两步完成的。
如果能写到缓冲区中为true，否则为false，并且另开一个缓存，来存放数据。
当第一个缓冲区为空了，触发drain事件，再把新开辟内存中的数据拿到缓冲区中，并读入文件。
当一个缓存区为空时，会发生一个drain事件。
* */

/*文件内容的拷贝*/
var src=fs.createReadStream('./data.txt');
var dest=fs.createWriteStream('./2.txt');
//pipe管道,pipe方法可以自动匹配源文件和目标文件之间的速度。目标文件是否能承受的住，(判断条件为dest.write(chunk===false))承受不住时该如何处理！
//当原始数据发射data事件时，执行ondata函数。往外喷射data事件时，触发回调函数ondata
//在回调函数中，如果写返回了false，就写不进去了，这时就把读这个流执行暂停。
//source.pause(); 让读他的这个流停止触发data事件。
//何时恢复呢？当小桶干了到时候。也就是触发drain事件，执行ondrain函数时恢复。source.resume();
src.pipe(dest);